package main

import (
	"time"

	"github.com/cqsmallant/ant_study/gorm_test"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/schema"
)

var MDB gorm.DB

// `gorm:"type:datetime(0)"`

func main() {

	MDB, err := Conn()
	if err != nil {
		panic(err)
	}

	// if MDB.Migrator().HasTable(&User{}) {
	// 	MDB.Migrator().DropTable(&User{})
	// } else {
	// 	MDB.AutoMigrate(&User{})
	// }
	// MDB.Create(&User{
	// 	Name: "小张",
	// })
	// // MDB.Delete(&User{})
	// user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}
	// result := MDB.Omit("Name", "Age", "CreatedAt").Create(&user)
	// println(user.ID)
	// println(result.Error)
	// println(result.RowsAffected)
	gorm_test.BatchCreate(MDB)

}

func Conn() (*gorm.DB, error) {
	dsn := "root:root@tcp(127.0.0.1:3306)/ant_study?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.New(mysql.Config{
		DSN: dsn,
	}), &gorm.Config{
		NamingStrategy: schema.NamingStrategy{
			TablePrefix: "fa_",
			// SingularTable: false,
		},
	})
	if err != nil {
		return nil, err
	}

	sqlDb, err := db.DB()
	if err != nil {
		return nil, err
	}
	//设置空闲连接池中的最大连接数
	sqlDb.SetMaxIdleConns(10)
	//设置数据库的最大打开连接数
	sqlDb.SetMaxOpenConns(100)
	//设置连接可以重复使用的最长时间。
	sqlDb.SetConnMaxLifetime(time.Hour)
	return db, nil
}
